home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / delicious_bookmarks-2.0.64-fx.xpi / chrome / deliciousBookmarks.jar / content / menubar.js < prev    next >
Encoding:
Text File  |  2008-06-19  |  10.0 KB  |  266 lines

  1. var YBlog411 = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
  2. var gYBXUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  3. var YBrdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].
  4.                       getService(Components.interfaces.nsIRDFService);
  5. var YBrdfContainerUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].
  6.                         getService(Components.interfaces.nsIRDFContainerUtils);
  7.  
  8. var ybookmarks_Main = {
  9.  
  10.    isMostRecentMenuPopulated: false, 
  11.    isMostFrequentMenuPopulated: false, 
  12.    _bookmark_menu_items: new Array(),
  13.  
  14.    addBookmarkItemsToMainMenu: function(from) {
  15.  
  16.     const MENU_SHOW_RECENT_SAVED = 1;
  17.     const MENU_SHOW_RECENT_VIEWED = 2;
  18.     const DEFAULT_SHOW_MENU_COUNT = 20;
  19.  
  20.     var prefs = Components.classes["@mozilla.org/preferences-service;1"]
  21.                         .getService(Components.interfaces.nsIPrefService).getBranch( "extensions.ybookmarks@yahoo." );
  22.  
  23.     var menuType = MENU_SHOW_RECENT_SAVED;
  24.   
  25.     try {
  26.       menuType = prefs.getIntPref( "menu.showtype" );
  27.     } catch ( e ) {
  28.     }
  29.  
  30.     if ( from && from == "new-bookmark-added" && menuType != MENU_SHOW_RECENT_SAVED ) {
  31.       return;
  32.     } else if ( from && from == "bookmark-visited" && menuType != MENU_SHOW_RECENT_VIEWED ) {
  33.       return;
  34.     }
  35.  
  36.     var menuCount = DEFAULT_SHOW_MENU_COUNT;
  37.     try {
  38.       menuCount = prefs.getIntPref( "menu.showcount" );
  39.     } catch ( e ) {
  40.     }
  41.     
  42.     var order = "descending";
  43.     var column = null;
  44.     if (menuType == MENU_SHOW_RECENT_SAVED ) {
  45.       column = "bookmark-sort-tree-adddate-col";
  46.     } else {
  47.       column = "bookmark-sort-tree-visitdate-col";
  48.     }
  49.  
  50.     var bookmarks = ybookmark_Utils.getSortedBookmarks ( column, menuCount );
  51.     var menupopup = document.getElementById( "ybookmarks_menu_popup" );
  52.  
  53.     // remove last few items from the menu popup. The menu items are cached in _bookmark_menu_items
  54.     var totalElements = this._bookmark_menu_items.length;
  55.     for ( var counter = 0; counter < totalElements; ++counter ) {
  56.       menupopup.removeChild ( this._bookmark_menu_items.pop() );
  57.       
  58.     }
  59.  
  60.     for ( var counter = 0; counter < bookmarks.length; ++counter ) {
  61.  
  62.       var bookmark = bookmarks[ counter ];
  63.  
  64.       var menuitem = ybookmark_Utils.createMenuItem( bookmark.name, "", "", "" );
  65.       menuitem.setAttribute( "id", bookmark.id );
  66.       menuitem.setAttribute( "type", bookmark.type );
  67.       menuitem.setAttribute( "url", bookmark.url );
  68.       menuitem.setAttribute( "statustext", bookmark.url );
  69.       menuitem.setAttribute( "image", bookmark.icon );
  70.       menupopup.appendChild ( menuitem );
  71.       this._bookmark_menu_items.push ( menuitem );
  72.     }
  73.     
  74.     var menuitem = document.getElementById("ybookmarks_bookmarks_type");
  75.     if (menuType == MENU_SHOW_RECENT_SAVED) {
  76.       menuitem.setAttribute("label", menuitem.getAttribute("label1"));
  77.       menuitem.setAttribute("tooltip", menuitem.getAttribute("tooltip1"));
  78.     }
  79.     else if (menuType == MENU_SHOW_RECENT_VIEWED) {
  80.       menuitem.setAttribute("label", menuitem.getAttribute("label2"));
  81.       menuitem.setAttribute("tooltip", menuitem.getAttribute("tooltip2"));
  82.     }
  83.  
  84.    },
  85.  
  86.    /**
  87.     * @param sortBy column name of the bookmark-sort-tree (ybookmarksOverlay.xul)
  88.     */
  89.    addBookmarksToPopup: function(popupElement, sortBy ) {
  90.  
  91.     while ( popupElement.firstChild ) { popupElement.removeChild ( popupElement.firstChild ); }
  92.  
  93.     var bookmarks = ybookmark_Utils.getSortedBookmarks ( sortBy, 15 );
  94.  
  95.     var counter = 0;
  96.     for ( ; counter < bookmarks.length; ++counter ) {
  97.  
  98.       var bookmark = bookmarks[ counter ];
  99.       var menuitem = ybookmark_Utils.createMenuItem( bookmark.name, "", "", "" );
  100.       menuitem.setAttribute( "id", bookmark.id );
  101.       menuitem.setAttribute( "type", bookmark.type );
  102.       menuitem.setAttribute( "url", bookmark.url );
  103.       menuitem.setAttribute( "statustext", bookmark.url );
  104.       menuitem.setAttribute( "image", bookmark.icon );
  105.       menuitem.setAttribute( "oncommand", "if (event.target == this) { ybookmarksUtils.openBookmark(event); }");
  106.       menuitem.setAttribute( "onclick", "if (event.target == this && event.button == 1) { ybookmarksUtils.openBookmark(event); }");
  107. /* ******* leaving this checked in, as it can be turned on quickly *******
  108.       if( bookmark.shared == "false" ) {
  109.         menuitem.setAttribute( "class", menuitem.getAttribute( "class" ) + " private-bookmark" );
  110.       }
  111. */
  112.       popupElement.appendChild ( menuitem );
  113.     }
  114.  
  115.     if ( counter == 0 ) {
  116.       ybookmark_Utils.addEmptyMenuItem( popupElement );
  117.     }
  118.      
  119.     YBtabsOpener.addMenuItem( popupElement );
  120.     return counter;
  121.    },
  122.  
  123.    SearchBookmarks: function() {
  124.     try {
  125.  
  126.       //If classic dont do anything
  127.       if(ybookmarksUtils.getExtensionMode() == YB_EXTENSION_MODE_CLASSIC)  {
  128.           return true;
  129.       }   
  130.       
  131.       var prefs = Components.classes["@mozilla.org/preferences-service;1"].
  132.                           getService(Components.interfaces.nsIPrefBranch);                             
  133.       var keepSidebarOpened = prefs.getBoolPref("extensions.ybookmarks@yahoo.sidebar.keep_opened");
  134.       if (keepSidebarOpened) {
  135.         toggleSidebar('viewYBookmarksSidebar', true);
  136.         var panel = document.getElementById("sidebar").contentDocument.getElementById("ybSidebarPanel");
  137.         panel.setSearchBoxFocus();
  138.  
  139.       } else {
  140.         toggleSidebar('viewYBookmarksSidebar');
  141.       }
  142.     } catch (e) {
  143.       yDebug.print("SearchBookmarks(): " + e);
  144.     }
  145.    
  146.   },
  147.  
  148.   addTagsToMenu: function(event) {
  149.     
  150.     var type = event.target.getAttribute("type");
  151.     if ( type != "main" ) {
  152.       return;
  153.     }
  154.  
  155.     /*var tagPopups = [ "ybookmarks_tags_menu_1", "ybookmarks_tags_menu_2", 
  156.                       "ybookmarks_tags_menu_3", "ybookmarks_tags_menu_4",
  157.                       "ybookmarks_tags_menu_5" 
  158.                     ];
  159.     var popularTags = ybookmark_Utils.getPopularTags();
  160.  
  161.     // hide everything now
  162.     for ( var index = 0; index < tagPopups.length; ++index ) {
  163.       document.getElementById ( tagPopups[ index ] ).setAttribute ( "hidden", "true" );
  164.     }
  165.  
  166.     for (var tagIndex = 0; tagIndex < tagPopups.length && tagIndex < popularTags.length; ++tagIndex) {
  167.       var menu = document.getElementById ( tagPopups[tagIndex] );
  168.       menu.setAttribute ( "label", popularTags[ tagIndex ] );
  169.       menu.setAttribute ( "hidden", "false" );
  170.  
  171.       var resourceName = ybookmarksMain.gBookmarks.getTagResourceName ( popularTags[ tagIndex ] );
  172.       menu.setAttribute( "ref", resourceName );
  173.       menu.builder.rebuild();
  174.     }
  175.     */
  176.     
  177.     
  178.     /* bags */
  179.     /*var bagPopups = [ "ybookmarks_bags_menu_1", "ybookmarks_bags_menu_2", 
  180.                       "ybookmarks_bags_menu_3", "ybookmarks_bags_menu_4",
  181.                       "ybookmarks_bags_menu_5" 
  182.                     ];
  183.     var bags = ybBags.getBags();
  184.     
  185.     // hide everything now
  186.     for ( var index = 0; index < bagPopups.length; ++index ) {
  187.       document.getElementById ( bagPopups[ index ] ).setAttribute ( "hidden", "true" );
  188.     }
  189.  
  190.     for (var bagIndex = 0; bagIndex < bagPopups.length && bagIndex < bags.length; ++bagIndex) {
  191.       var menu = document.getElementById ( bagPopups[bagIndex] );
  192.       menu.setAttribute ( "label", bags[ bagIndex ].tags.join(" ") );
  193.       menu.setAttribute ( "hidden", "false" );
  194.  
  195.       var resourceName = ybookmarksMain.gBookmarks.getTagResourceName ( bags[ bagIndex ].tags[0] ); // cmyang:: hack
  196.       menu.setAttribute( "ref", resourceName );
  197.       menu.builder.rebuild();
  198.     }
  199.     */
  200.   },
  201.  
  202.   addEmptyMenuItem: function(event) {
  203.     var target = event.originalTarget;
  204.     if ( target.nodeName == "menu" ) {
  205.       target = target.firstChild
  206.     }
  207.  
  208.     if (target.nodeName == "menupopup" && !target.hasChildNodes()) {
  209.       ybookmark_Utils.addEmptyMenuItem( event.originalTarget );
  210.     }
  211.   },
  212.   
  213.   addPopularPageMenuItem : function(target) {
  214.     //var target = event.target;
  215.     var XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  216.     var bundle = document.getElementById( "ybookmarks-strings" );
  217.  
  218.     var items = target.getElementsByAttribute("class", "popular-page-separator");    
  219.     if (items.length == 0 && target.firstChild) {
  220.       var menuseparator = document.createElementNS(XULNS, "menuseparator");
  221.       menuseparator.setAttribute("class", "popular-page-separator")
  222.       target.insertBefore(menuseparator, target.firstChild);
  223.     }
  224.  
  225.     var items = target.getElementsByAttribute("class", "popular-page-item");
  226.     if (items.length == 0 && target.firstChild) {
  227.       var menuitem = document.createElementNS(XULNS, "menuitem");
  228.       var label = target.parentNode.getAttribute("label");
  229.       menuitem.setAttribute("label", bundle.getFormattedString("extensions.ybookmarks.menu.popular.page", 
  230.          [label]));
  231.       menuitem.setAttribute("class", "popular-page-item");
  232.       menuitem.setAttribute("tag", label);
  233.       menuitem.setAttribute("oncommand", "ybookmarks_Main.openPopularPageForTag(event);");
  234.       menuitem.setAttribute("onclick", "if (event.button == 1) { ybookmarks_Main.openPopularPageForTag(event); }");
  235.       target.insertBefore(menuitem, target.firstChild);
  236.     }
  237.   },
  238.   
  239.   openPopularPageForTag : function(event) {
  240.      var tag = event.target.getAttribute("tag");
  241.      if (tag) {
  242.        var url = deliciousService.getUrl("popular/" + tag);
  243.        var where = whereToOpenLink(event);
  244.        if (event.button == 1)
  245.          ybBookmarksMenu.closeMenuPopup(event.target)
  246.        openUILinkIn(url, where);
  247.      }
  248.   }
  249. };
  250.  
  251. var YBonMenuTypePrefChanged = {
  252.   observe: function ( subject, topic, data ) {
  253.  
  254.     if ( topic != "nsPref:changed" ) {
  255.       return;
  256.     }
  257.  
  258.     if ( data == "extensions.ybookmarks@yahoo.menu.showcount" ||
  259.          data == "extensions.ybookmarks@yahoo.menu.showtype" 
  260.        ) {
  261.       ybookmarksMain.isBookmarkChanged = true;
  262.     }
  263.   }
  264. };
  265.  
  266.